/**
 * @description 实现这个方法，能够删除指定文件夹下的所有 `.map` 文件。
 * @param {string} p
 * @return {void}
 */
var fs = require("fs")

const deleteMapFiles = (p) => {
  // 请实现……
  // 先读取文件夹
  fs.readdir(p, function (result, array) {
    if (result) throw result.massage // throw 抛出错误，停止代码
    // console.log(array);
    // 循环取出目录中的子文件名和子文件夹名
    for (const name of array) {
      // 拼接此文件或文件夹的完整路径, 
      let allPath = p + "/" + name
      // console.log(allPath);
      // state.isDirectory() 判断文件夹   state.isFile()判断文件
      fs.stat(allPath, function (result, state) {
        if (state.isFile() && name.endsWith('.map')) {
          // 如果当前目录是文件目录,并且是.map文件, 删除文件
          // unlink() 删除文件
          console.log(p+'/'+name);
          fs.unlink(p+'/'+name,function(result){
              if(result) { console.log("删除文件出错: " + result.message) }
              else { console.log("文件删除成功") }
          })
         
        }
         // console.log(name);\
         if(state.isDirectory()){
          // 如果当前目录是文件夹目录, 需要重新读取这个文件夹, 相当于把整个逻辑重来一遍
          // 使用递归思想, 把读取文件夹封装到一个函数中, 需要读取文件夹时,调用函数
          deleteMapFiles(allPath) 
          // console.log('this');
      }
      })
    }

    
  })


};
deleteMapFiles('./playground')

// * ------------------------------------------------

// * playground 文件夹目前的目录结构如下：

/*
playground
├── index.html
├── index.js
├── index.js.map
└── static
    ├── main.js
    ├── main.js.map
    ├── style.css
    └── style.css.map
*/

// * 调用 deleteMapFiles('./playground') ，将删除所有 map 文件
// * 然后文件结构应该如下：

/*
playground
├── index.html
├── index.js
└── static
    ├── main.js
    └── style.css
*/
